package controller

import (
	"fmt"
	"go_web_bubble/models"
	"go_web_bubble/response"
	"go_web_bubble/service"
	"net/http"

	"github.com/gin-gonic/gin"
)

func IndexHandler(c *gin.Context) {
	c.HTML(http.StatusOK, "index.html", nil)
}

//插入待办事项
func CreateBubble(c *gin.Context) {
	var bubble models.Bubble
	//ShouldBindJSON第二次会失效主要是 http.Request的io buffer第一次取完之后，http.body 结构体中的sawEOF=true
	//ShouldBindJSONWith可解决
	c.BindJSON(&bubble) //参数绑定，从请求体中取数据，主要是 http.Request的io buffer第一次取完之后，http.body 结构体中的sawEOF=true
	err := service.InsertBubble(&bubble)
	if err != nil {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, err.Error(), nil})
	} else {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "数据插入成功！", bubble})
	}
}

// 查询待办清单列表
func GetAllBubble(c *gin.Context) {
	bubbleList, err := service.GetAllBubble()
	fmt.Println(bubbleList)
	if err != nil {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, err.Error(), nil})
	} else {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "数据获取成功！", bubbleList})
	}
}

//根据id更新待办事项状态,从路径中获取参数
func UpdateBubble(c *gin.Context) {
	id, ok := c.Params.Get("id")
	fmt.Println("id is: ", id)
	if !ok {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "无效的ID！", nil})
		return
	}
	if err := service.UpdateBubble(id); err != nil {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "更新失败: " + err.Error(), nil})
	} else {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "更新成功！", nil})
	}
}
func DeleteBubble(c *gin.Context) {
	id, ok := c.Params.Get("id")
	if !ok {
		c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
	}
	if err := service.DeleteBubbleByID(id); err != nil {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "删除失败: " + err.Error(), nil})
	} else {
		c.JSON(http.StatusOK, response.Result{http.StatusOK, "删除成功！", nil})
	}
}
